﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>枚举器对象 - 定义 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="An enumerator is a type of function object which is called repeatedly to enumerate a sequence of values." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>枚举器对象</h1>

<p>枚举器是<a href="Functor.htm">函数对象</a>的一种类型, 可以反复调用以枚举值序列.</p>
<p>枚举器的存在主要是为了支持 <a href="../commands/For.htm">For-循环</a>, 通常不会直接调用. For-循环文档详细描述了调用枚举器的过程. 该脚本可以实现一个枚举器来控制在循环的每次迭代中将哪些值指派给了 for-循环的变量.</p>
<p>内置的枚举器是 <code>Enumerator</code> 类的实例(其由 <a href="Func.htm">Func</a> 派生), 但任何函数对象都有可能与 for-loop 一起使用.</p>

<p>相关: <a href="../commands/For.htm">For-loop</a>, <a href="Object.htm#OwnProps">OwnProps</a>, <a href="Array.htm#__Enum">__Enum (Array)</a>, <a href="Map.htm#__Enum">__Enum (Map)</a></p>

<div class="methodShort"><h2 id="Call">Call</h2>
<p>检索枚举中的下一个或多个项目.</p>
<pre class="Syntax">Enum.<span class="func">Call</span>(&amp;OutputVar1 <span class="optional">, &amp;OutputVar2</span>)</pre>
<pre class="Syntax"><i>EnumFunction</i>(&amp;OutputVar1 <span class="optional">, &amp;OutputVar2</span>)</pre>
<dl>
  <dt>OutputVar1, OutputVar2</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#variable-references">VarRef</a></p>
    <p>一个或多个供枚举器指派值的变量引用.</p>
  </dd>
  <dt>返回值</dt>
  <dd><p>成功时返回非零整数, 没有项目剩余时则返回零.</p></dd>
</dl>
<p>一个简单的函数定义可以用来创建一个枚举器; 在这种情况下, Call(调用) 方法是隐式的.</p>
<p>当定义你自己的枚举器时, 参数的数量应该与预期传递给 For-循环的变量数量相匹配(在 "in" 关键字之前). 这通常是 1 或 2, 但一个 For-循环最多可以接受 19 个变量. 要允许该方法接受不同数量的变量, 请声明<a href="../Functions.htm#optional">可选参数</a>.</p>
<p>当 For-循环试图调用方法时, 如果变量比参数多(传递的参数太多, 定义的参数太少) 或者变量比强制参数少, 就会抛出异常.</p>
</div>

</body>
</html>